<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://hyperf.wiki
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 */
namespace App\Controller;

use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Contract\ResponseInterface;
use Psr\Container\ContainerInterface;

abstract class AbstractController
{
    #[Inject]
    protected ContainerInterface $container;

    #[Inject]
    protected RequestInterface $request;

    #[Inject]
    protected ResponseInterface $response;
	
	/**
	 * @param string $msg
	 * @param array|null $data
	 * @param int $code
	 * @return \Psr\Http\Message\ResponseInterface
	 */
	protected function result(string $msg = '', array $data = null, int $code = 0): \Psr\Http\Message\ResponseInterface
	{
		return $this->response->json([
			'code'=>$code,
			'msg'=>$msg,
			'data'=>$data,
		]);
	}
	
	
	protected function error(string $msg = '', array $data = [], int $code = 0): \Psr\Http\Message\ResponseInterface
	{
		return $this->result($msg,$data,$code);
	}
	
	protected function success(string $msg = '', array $data = [], int $code = 1): \Psr\Http\Message\ResponseInterface
	{
		return $this->result($msg,$data,$code);
	}
}
